home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
byt0486a.arc
/
ATOMTLBX.LBR
/
ATSPGM.FOR
< prev
next >
Wrap
Text File
|
1986-04-11
|
4KB
|
150 lines
c*+*+*+*+*+*
c This program was produced by the ATOMCC translator version 7.10
c Copyright (C) 1985, Y. F. Chang
c*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
c Portions (c) Copyright, Microsoft Corp., 1981. All rights reserved.
c This program was written for the following inputs
c
C FIRST PAINLEVE TRANSCENDENT
C DIFF(Y,T,2) = 6.0*Y*Y + T
c--------
c no instructions in second input block
c--------
COMMON /IPASS/ LENSER,LENVAR,MPRINT,MSTIFF,LRUN,
+ KTRDCV,KNTSTP,KTSTIF,KXPNUM,KDIGS,KENDFG,NTERMS,NOPT
A /RPASS/ RADIUS,ERRLIM,ADJSTF,RCREAL,RCIMAG,RDCERR
B /CPASS/ START,END,ORDER
C /DPASS/ H,HNEW,XPRINT,DLTXPT
DIMENSION TMPS( 36, 1)
CHARACTER*6 NAMES
EQUIVALENCE (TMPS(1,1),Y(1))
DIMENSION NAMES(1), Y(36), T(2), TMPAAB(30), TMPAAA(30)
DATA NAMES(1)/'Y.....'/
Y(33) = 1.1
10 FORMAT(72H ATOMCC Ver. 7.10, Copyright (C) 1985, Y. F. Chang; S
Aolution results./9H ******)
11 FORMAT(/5X,11HStep number,I6,13H at the point,1P1E12.4/1X,
A 9Hvalues of )
12 FORMAT(1X, A6,(1X,1P4E13. 5))
13 FORMAT(5X,21HStepsize adjusted to ,1PE13.5)
14 FORMAT(/5X,35HThe solution stopped normally after, I4,24H steps as
a set by nsteps. )
16 FORMAT(/5X,63HThe adjustment for stepsize seems to be in a loop. P
Alease try a /5X,22Hshorter series length. )
WRITE(*,10)
c--------
c Initialize variables to default values.
c--------
NSTEPS = 40
H = 1.E0
ERRLIM = 1.E- 6
LENSER = 30
MPRINT = 4
NTERMS = 2
KTRDCV = 1
ADJSTF = 1.E-2
MSTIFF = 0
DLTXPT = 0.E0
c--------
c start of third input block
c--------
C READ INTEGRATION INTERVAL AND INITIAL CONDITIONS.
READ(5,1010) START,END,Y(1),Y(2)
1010 FORMAT(4F10.3)
WRITE(*,1020) START,END,Y(1),Y(2)
1020 FORMAT(' SOLVE THE FIRST PAINLEVE TRANSCENDENT' /
+ ' INTERVAL: ',2F10.3 /
+ ' INITIAL CONDITIONS:',2F10.3 /)
c--------
c end of third input block
c--------
c More initializations
c--------
DLTXPT = SIGN(DLTXPT,(END-START))
H = SIGN(H,(END-START))
KDIGS = 6
XPRINT = START + DLTXPT
KXPNUM = 35
LENVAR = 36
LRUN = 1
KTSTIF = 0
NUMEQS = 1
IF(LENSER.GT.(LENVAR- 6)) LENSER = LENVAR - 6
IF(MPRINT.LT.2) GO TO 17
WRITE(*,11) KTSTIF,START
K = Y(33)
WRITE(*,12) NAMES(K),Y(1), Y(2)
c--------
c Loop for integration steps. Inside the loop, print the desired output
c--------
17 DO 27 KINTS=1,NSTEPS
KOUNT = 0
KNTSTP = KINTS
19 CONTINUE
T(1) = START
T(2) = H
Y(2) = Y(2)*(H)
c--------
c Preliminary series calculations
c--------
TMPAAA(1) = 6.E0*Y(1)
TMPAAB(1) = TMPAAA(1)*Y(1)
Y(3) = (TMPAAB(1) + T(1))*(H*H/2.E0)
TMPAAA(2) = 6.E0*Y(2)
TMPAAB(2) = TMPAAA(1)*Y(2) + TMPAAA(2)*Y(1)
Y(4) = (TMPAAB(2) + T(2))*(H*H/6.E0)
c--------
c Loop for series calculations
c--------
DO 23 K= 5,LENSER
KA = K - 1
KB = K - 2
TMPAAA(KB) = 6.E0*Y(KB)
TMPAAB(KB) = 0.E0
KZ = 1 + KB
DO 30 N=1, KB
L = KZ - N
TMPAAB(KB) = TMPAAB(KB) + TMPAAA(N)*Y(L)
30 CONTINUE
Y(K) = (TMPAAB(KB))*(H*H/(KB*KA))
c--------
c Test and adjust H to avoid over/under flow.
c--------
IF(MSTIFF.GE.20 .AND. KTSTIF.GT.0) GO TO 23
TMP = ABS(Y(K))
IF(TMP.LE.1.E-35) GO TO 23
IF(TMP.LT.1.E20 .AND. TMP.GT.1.E-20) GO TO 23
IF(KTSTIF.NE.0 .AND. TMP.LT.1.0) GO TO 23
KOUNT = KOUNT + 1
IF(KOUNT.LT.9) GO TO 22
WRITE(*,16)
GO TO 28
22 CONTINUE
Y(2) = Y(2)/(H)
H = H * TMP**(0.3/(1-K))
IF(MPRINT.GE.4) WRITE(*,13) H
GO TO 19
23 LRUN = 1
c--------
c Calculate radius of convergence and take optimum step.
c--------
CALL RDCV(TMPS,LENVAR,NUMEQS,NAMES)
24 CALL RSET(TMPS,LENVAR,NUMEQS,NAMES)
c--------
c no instructions in fourth input block
c--------
25 GO TO (26,28,24), KENDFG
26 H = SIGN(RADIUS,H)
START = START + HNEW
IF(MPRINT.LT.4) GO TO 27
WRITE(*,11) KNTSTP, START
K = Y(33)
WRITE(*,12) NAMES(K),Y(1), Y(2)
27 CONTINUE
WRITE(*,14) NSTEPS
28 CONTINUE
29 STOP
END
K = Y(33)
WRITE(*,12) NAMES(K),Y(1),